package com.abredatos.db;

import java.sql.Date;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;


public class DBAdapter 
{
    public static final String KEY_ROWID = "id";
    public static final String KEY_PRECIO = "presupuesto";
    public static final String KEY_URL = "url";
    public static final String KEY_PROYECTO = "proyecto";    
    public static final String KEY_CATEGORIA = "categoria";
    public static final String KEY_COORDX = "coordy";
    public static final String KEY_COORDY = "coordx";
    
    
    
    private static final String DATABASE_TABLE = "entities";
        
    private final Context context; 
    
    private EntityOpenHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new EntityOpenHelper(context);
        
    }
  
    //---opens the database---
    public DBAdapter open() throws SQLException 
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---    
    public void close() 
    {
        DBHelper.close();
    }
  
    
    //---insert a title into the database---
    public long insertEntity(float price, String url, String proyecto, int categoria, float coordX, float coordY) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_PRECIO, price);
        initialValues.put(KEY_URL, url);
        initialValues.put(KEY_PROYECTO, proyecto);
        initialValues.put(KEY_CATEGORIA, categoria);
        initialValues.put(KEY_COORDX, coordX);
        initialValues.put(KEY_COORDY, coordY);
        
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    //---deletes a particular title---
    public boolean deleteEntity(long rowId) 
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID + 
        		"=" + rowId, null) > 0;
    }

    //---retrieves all the entities---
    public Cursor getAllEntities() 
    {
    	 Cursor mCursor =
    	 db.query(DATABASE_TABLE, new String[] {
        		KEY_ROWID, 
        		KEY_PRECIO,
        		KEY_URL,
        		KEY_PROYECTO,
        		KEY_CATEGORIA,
        		KEY_COORDX,
        		KEY_COORDY}, 
                null, 
                null, 
                null, 
                null, 
                null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        
        return mCursor;
    }

    //---retrieves a particular entity---
    public Cursor getEntity(long rowId) throws SQLException 
    {
        Cursor mCursor =
                db.query(true, DATABASE_TABLE, new String[] {
                		KEY_ROWID, 
                		KEY_PRECIO,
                		KEY_URL,
                		KEY_PROYECTO,
                		KEY_CATEGORIA,
                		KEY_COORDX,
                		KEY_COORDY
                		}, 
                		KEY_ROWID + "=" + rowId, 
                		null,
                		null, 
                		null, 
                		null, 
                		null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //---updates an entity---
    public boolean updateEntity(long rowId, float price, String url, String proyecto, int categoria, float coordX, float coordY) 
    {
        ContentValues args = new ContentValues();
        args.put(KEY_PRECIO, price);
        args.put(KEY_URL, url);
        args.put(KEY_PROYECTO, proyecto);
        args.put(KEY_CATEGORIA, categoria);
        args.put(KEY_COORDX, coordX);
        args.put(KEY_COORDY, coordY);
        
        return db.update(DATABASE_TABLE, args, 
                         KEY_ROWID + "=" + rowId, null) > 0;
    }
    
    
    public long initiateFooEntity() 
    {
        ContentValues args = new ContentValues();
        args.put(KEY_PRECIO, 1);
        args.put(KEY_URL, "http://www.google.es");
        args.put(KEY_PROYECTO, "cat");
        args.put(KEY_CATEGORIA, 1);
        args.put(KEY_COORDX, 3.4);
        args.put(KEY_COORDY, 40);
        
        //db.insert(DATABASE_TABLE, null, args);
      
        return db.insert(DATABASE_TABLE, null, args);
    }
    
    public void restartDatabase() {
		 db.execSQL("DROP TABLE IF EXISTS entities");
    }
}